Some Python Magic

John Gill

swfiua@gmail.com

http://xkcd.com/353/

Who uses python on windows?

Who uses IronPython?

What about:

  • numpy
  • scipy
  • pandas
  • matplotlib?

What we really need is cpython which can call .NET objects seamlessly

Pythonnet

https://github.com/pythonnet/pythonnet

Thanks to:

  • Brian Lloyd

  • David Anthoff

pip install --pre pythonnet

Magic time -- imagine

Imagine there's no numpy, it's easy if you try

Imagine there's no batteries, only MS .Net


In [18]:
import clr

from System import Random

rand = Random()

data = pylab.hist([rand.Next() for x in xrange(1000)])


Can use any .NET dll

Put folder containing the DLLs you want to use in your PYTHONPATH


   import clr
   clr.AddReference("Name.Of.Your.Assembly")

   from assembly.name import DotNetClass
   

In [8]:
from System.Diagnostics import Trace

Trace.WriteLine("message from python")

Thanks

To everyone who made this possible..

Special thanks to: Cristoph Gohlke

Christoph Gohlke

Binary packages for windows:

http://www.lfd.uci.edu/~gohlke/pythonlibs/


In [1]:
"thank you!" * 1000


Out[1]:
'thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!thank you!'